package com.lkd.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lkd.entity.OrderCollectEntity;
import com.lkd.vo.BarCharVO;
import com.lkd.vo.OrderCountResp;
import com.lkd.vo.Pager;
import com.lkd.vo.TotalRevenueVo;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;


public interface OrderCollectService extends IService<OrderCollectEntity> {
    /**
     *获取一定时间范围内的合作商的点位分成数据
     * @param start
     * @param end
     * @return
     */
    List<OrderCollectEntity> getOwnerCollectByDate(Integer ownerId, LocalDate start, LocalDate end);


    /**
     * 订单数统计
     * @param start 开始时间
     * @param end 结束时间
     * @return
     */
    int orderCount(LocalDateTime start, LocalDateTime end);


    /**
     * 订金额统计
     * @param start
     * @param end
     * @return
     */
    int orderAmount(LocalDateTime start, LocalDateTime end);


    /**
     * 分成金额统计
     * @param start
     * @param end
     * @return
     */
    int totalBill(LocalDateTime start, LocalDateTime end);


    /**
     * 获取合作商分账汇总信息
     * @param pageIndex
     * @param pageSize
     * @param name
     * @param start
     * @param end
     * @return
     */
    Pager<OrderCollectEntity> getPartnerCollect(Integer pageIndex, Integer pageSize, String name, LocalDate start, LocalDate end);


    /**
     * 获取合作商前12条点位分账数据
     * @param partnerId 合作商id
     * @return
     */
    List<OrderCollectEntity> getTop12(Integer partnerId);

    /**
     * 合作商点位分账搜索
     * @param partnerId  合作商id
     * @param nodeName   点位名称
     * @param start      开始时间
     * @param end        结束时间
     * @return
     */
    Pager<OrderCollectEntity> search(Long pageIndex, Long pageSize, Integer partnerId, String nodeName, LocalDate start, LocalDate end);


    /**
     * 获取一定日期内合作商的收益统计--》折线图
     * @param partnerId 合作商id
     * @param start  开始时间
     * @param end  结束时间
     * @return
     */
    BarCharVO getCollect(Integer partnerId, LocalDate start, LocalDate end);

    OrderCountResp orderCountInfo(Integer partnerId, LocalDateTime start, LocalDateTime end);

    TotalRevenueVo getTotalRevenue(Integer partnerId, LocalDateTime start, LocalDateTime end);

}
